데이터베이스는 세부사항이다

Clean Architecture - Item 30

Posted by Songi on 2019-11-25

“CleanArchitecture 30장”


데이터베이스는

  • 모델 아님
  • 소프트웨어
  • 데이터에 접근할 방법을 제공하는 유틸리티
  • 저수준 세부사항
  • 아키텍처와 관련 없음

뛰어난 아키텍처라면 저수준의 메커니즘이 시스템 아키텍처를 오염시키는 일을 용납하지 않는다.

관계형 데이터베이스

  • 관계형 데이터베이스는 결국 기술일 뿐이다. 즉 세부사항임을 뜻함
  • 데이터를 테이블에 행 단위로 배치한다는 자체는 아키텍처 관점으로 전혀 중요하지 않음
  • 애플리케이션의 유스케이스는 이런 방식을 알아선 안됨 (데이터가 테이블 구조를 가진다는 사실)
  • 아키텍처의 외부 원에 위치한 최하위 수준의 유틸리티 함수만 알아야 함

데이터베이스 시스템은 왜 이렇게 널리 사용되는가?

  • 디스크 -> 데이터 접근 및 관리 시스템이 필요해짐 -> 두가지 유형으로 분리
  • 파일 시스템 : 문서기반. 파일 구조로 만들어 디렉터리를 통해 접근
  • 데이터베이스 시스템 : 내용 기반. 테이블 구조로 만들어 SQL을 통해 접근
  • 두 시스템은 데이터를 디스크에 체계화 하여, 각 시스템에 특화된 방식으로 접근해야 할 때 효율적으로 저장, 검색 할수 있도록 함
  • 관련 데이터를 RAM 으로 가져옴

디스크가 없다면 어떻게 될까?

만약 모든 데이터가 RAM 에 저장된다면 데이터를 어떻게 체계화할 것인가?

  • 데이터들을 연결 리스트, 트리, 해시 테이블, 스택, 큐 혹은 무수히 많은 데이터 구조로 체계화
  • 데이터 접근할 때는 포인터나 참조 사용
  • 데이터가 데이터 베이스나 파일 시스템에 있더라도 RAM으로 읽은 후 임의의 구조로 변경
  • 데이터를 파일이나 테이블 형태로 그대로 두는 경우는 거의 없음

세부사항

데이터베이스는

  • 메커니즘
  • 비트를 닮은 거대한 그릇
  • 데이터를 장기적으로 저장하는 공간

하지만 성능은?

데이터 저장소에 데이터를 빠르게 넣고 뺄 수 있는 건 저수준의 관심사이다. 성능은 시스템 전반적 아키텍처와는 아무 관련이 없다.

결론

  • 체계화된 데이터 구조와 데이터 모델은 아키텍처 적으로 중요
  • 데이터베이스는 아키텍처적으로 중요하지 않음

데이터는 중요하다. 데이터베이스는 세부사항이다.